package com.shlh.saas.entity.linkedin;

/**
 * LinkedIn ES字段常量类
 * 对应ES索引：ly_users
 */
public class EsLinkedInFields {

    // ==================== 基础标识字段 ====================
    
    /**
     * MySQL数据库记录ID
     */
    public static final String MYSQL_ID = "mysql_id";

    /**
     * MySQL数据库表名
     */
    public static final String MYSQL_TABLE = "mysql_table";

    // ==================== 核心业务字段 ====================

    /**
     * 公司名称
     */
    public static final String COMPANY_NAME = "company_name";

    /**
     * 职位标题
     */
    public static final String JOB_TITLE = "job_title";

    /**
     * 地理位置
     */
    public static final String LOCATION = "location";

    /**
     * 公司行业
     */
    public static final String COMPANY_INDUSTRY = "company_industry";

    /**
     * LinkedIn个人资料链接
     */
    public static final String LINKEDIN_URL = "linkedin_url";

    /**
     * 邮箱地址
     */
    public static final String EMAILS = "emails";

    /**
     * 公司规模
     */
    public static final String COMPANY_SIZE = "company_size";

    /**
     * 工作经验年限
     */
    public static final String YEARS_EXPERIENCE = "years_experience";

    // ==================== 个人信息字段 ====================

    /**
     * 全名
     */
    public static final String FULL_NAME = "full_name";

    /**
     * 名字
     */
    public static final String FIRST_NAME = "first_name";

    /**
     * 姓氏
     */
    public static final String LAST_NAME = "last_name";

    /**
     * 手机号码
     */
    public static final String MOBILE = "mobile";

    /**
     * 其他电话号码
     */
    public static final String PHONE_NUMBERS = "phone_numbers";

    /**
     * 国家
     */
    public static final String COUNTRY = "countries";

    /**
     * 城市
     */
    public static final String CITY = "city";

    // ==================== 扩展信息字段 ====================

    /**
     * 公司网站
     */
    public static final String COMPANY_WEBSITE = "company_website";

    /**
     * 公司成立时间
     */
    public static final String COMPANY_FOUNDED = "company_founded";

    /**
     * Twitter用户名
     */
    public static final String TWITTER_USERNAME = "twitter_username";

    /**
     * GitHub链接
     */
    public static final String GITHUB_URL = "github_url";

    /**
     * Facebook链接
     */
    public static final String FACEBOOK_URL = "facebook_url";

    /**
     * Twitter链接
     */
    public static final String TWITTER_URL = "twitter_url";

    /**
     * 学历
     */
    public static final String EDUCATION = "education";

    /**
     * 技能
     */
    public static final String SKILLS = "skills";

    // ==================== 查询字段组合 ====================

    /**
     * 基础查询字段（用于列表显示）
     */
    public static final String[] FIELD_QUERY = {
            MYSQL_ID, MYSQL_TABLE, COMPANY_NAME, JOB_TITLE, LOCATION,
            COMPANY_INDUSTRY, LINKEDIN_URL, EMAILS, COMPANY_SIZE,
            YEARS_EXPERIENCE, FULL_NAME, FIRST_NAME, LAST_NAME,
            MOBILE, PHONE_NUMBERS, COUNTRY, CITY, COMPANY_WEBSITE,
            COMPANY_FOUNDED, TWITTER_USERNAME, GITHUB_URL, FACEBOOK_URL,
            TWITTER_URL
    };

    /**
     * 标识字段（用于两阶段查询）
     */
    public static final String[] IDENTIFIER_FIELDS = {
            MYSQL_ID, MYSQL_TABLE
    };

    /**
     * 搜索字段（用于全文搜索）
     */
    public static final String[] SEARCH_FIELDS = {
            COMPANY_NAME, JOB_TITLE, LOCATION, COMPANY_INDUSTRY,
            FULL_NAME, FIRST_NAME, LAST_NAME, EMAILS, COMPANY_WEBSITE
    };

    // ==================== 排序字段 ====================

    /**
     * 主要排序字段
     */
    public static final String SORT_FIELD_PRIMARY = MYSQL_ID;

    /**
     * 公司名称排序字段
     */
    public static final String SORT_FIELD_COMPANY = COMPANY_NAME + ".keyword";

    /**
     * 姓名排序字段
     */
    public static final String SORT_FIELD_NAME = FULL_NAME + ".keyword";

    /**
     * 职位排序字段
     */
    public static final String SORT_FIELD_JOB = JOB_TITLE + ".keyword";



    // ==================== 排序方向 ====================

    /**
     * 升序
     */
    public static final String SORT_ORDER_ASC = "asc";

    /**
     * 降序
     */
    public static final String SORT_ORDER_DESC = "desc";

    /**
     * 最新优先（默认排序）
     */
    public static final String SORT_ORDER_NEWEST_FIRST = SORT_ORDER_DESC;

    // ==================== 聚合字段 ====================

    /**
     * 公司行业聚合字段
     */
    public static final String AGG_INDUSTRY = COMPANY_INDUSTRY + ".keyword";

    /**
     * 职位标题
     */
    public static final String AGG_JOB_TITLE = JOB_TITLE + ".keyword";

    /**
     * 地理位置聚合字段
     */
    public static final String AGG_LOCATION = LOCATION + ".keyword";

    /**
     * 公司规模聚合字段
     */
    public static final String AGG_COMPANY_SIZE = COMPANY_SIZE;

    /**
     * 国家聚合字段
     */
    public static final String AGG_COUNTRY = COUNTRY + ".keyword";

    // ==================== 查询限制 ====================

    /**
     * 默认查询大小
     */
    public static final int DEFAULT_SIZE = 10;

    /**
     * 最大查询大小
     */
    public static final int MAX_SIZE = 10000;

    /**
     * 导出最大限制
     */
    public static final int MAX_EXPORT_SIZE = 1000000;

    /**
     * 搜索建议最大数量
     */
    public static final int MAX_SUGGESTIONS = 10;

    // ==================== 联系方式类型 ====================

    /**
     * 有邮箱
     */
    public static final String CONTACT_EMAIL = "email";

    /**
     * 有手机号
     */
    public static final String CONTACT_PHONE = "phone";

    /**
     * 有LinkedIn链接
     */
    public static final String CONTACT_LINKEDIN = "linkedin";

    /**
     * 有公司网站
     */
    public static final String CONTACT_WEBSITE = "website";

    /**
     * 有社交媒体
     */
    public static final String CONTACT_SOCIAL = "social";

    // ==================== 私有构造函数 ====================

    private EsLinkedInFields() {
        // 工具类，禁止实例化
    }
}
